import { SetMetadata } from '@nestjs/common'
import { Role } from './enum'

export const ROLE_KEY = 'role'

// 设置元信息的装饰器，通过Reflector获取
// SetMetadata(ROLE_KEY, roles)：调用 SetMetadata 函数来设置元数据。
// ROLE_KEY：作为元数据的键，前面已经定义为 'role'。
// roles：作为元数据的值，是一个包含允许访问的角色列表的数组。
// 权限控制：可以为控制器的路由方法添加角色信息作为元数据，例如为某个路由设置只有 admin 角色可以访问。
// 在请求处理过程中，通过 Reflector 读取这些元数据，根据角色信息判断用户是否有权限访问该路由。
export const Roles = (...roles: Role[]) => SetMetadata(ROLE_KEY, roles)
